﻿using System;
using System.Collections.Generic;
using System.Text;

namespace LocalizationTest
{
  abstract public class ActionDescription
  {
    abstract public ActionDescription InvertAction();
    abstract public WorldState Execute(MotionModel motionModel, WorldState oldWorldState);
    abstract public WorldState ExecutePerfect(MotionModel motionModel, WorldState oldWorldState);

    public WorldState ExecuteInverted(WorldState oldState)
    {
      ActionDescription invertedAction = this.InvertAction();
      return invertedAction.ExecutePerfect(null, oldState);
    }

    public abstract override string ToString();

    public abstract ActionDescription Parse(string str);
  }
}
